<?php

/**
 * applicatieklasse verantwoordelijk voor de CRUD functies van de werkplekinspecties (AKA WPI/inspectie)
 * @author Ian den Hamer
 * @editor Leander Molegraaf
 */
require_once 'defs/Constants.php';
require_once FILE_DB_INSPECTIE;

//include 'db/database.php';

class inspectie {

    private $inspectie_id;
    private $gebruiker_id;
    private $versie_id;
    private $inspectietype = '';
    private $project = '';
    private $locatie = '';
    private $datum = '';
    private $opmerking = '';
    private $afhandelings_datum = '';
    private $actie_paraaf = '';

    public function save() {
        //DbInspectie vraagt om een inspectie ID in de constructor. ik geef hem hier als 0 mee,
        //Hoewel dit eigenlijk niet zou mogen moeten. er is niet genoeg tijd om dat op te lossen

        $database = new DbInspectie(0);
        $database->save($this->gebruiker_id, $this->versie_id, $this->inspectietype, $this->project, $this->locatie, $this->datum, $this->opmerking, $this->afhandelings_datum, $this->actie_paraaf);
        $this->setInspectieId($database->dbGetInsertedId());
        $this->inspectie_id = $database->getInspectieId();
    }

    public function update() {
        $database = new DbInspectie($this->inspectie_id);
        $database->update($this->gebruiker_id, $this->versie_id, $this->inspectietype, $this->project, $this->locatie, $this->datum, $this->opmerking, $this->afhandelings_datum, $this->actie_paraaf);
    }

    public function delete() {
        $database = new DbInspectie($this->inspectie_id);
        $database->delete();
    }

    public function get($id) {
        $database = new DbInspectie($id);
        return($database->DbGetInspectieData($id));
    }

    //setters

    public function setInspectieId($id) {

        if (is_numeric($id)) {
            $this->inspectie_id = $id;
        } else {
            throw new Exception(INSPECTIE_ERROR_INVALIDTBTYPEID);
        }
    }

    public function setGebruikerId($new) {

        $this->gebruiker_id = $new;
    }

    public function setVersieId($new) {

        $this->versie_id = $new;
    }

    public function setInspectietype($new) {

        $this->inspectietype = $new;
    }

    public function setProject($new) {

        $this->project = $new;
    }

    public function setLocatie($new) {

        $this->locatie = $new;
    }

    public function setDatum($new) {

        $this->datum = $new;
    }

    public function setOpmerking($new) {

        $this->opmerking = $new;
    }

    public function setAfhandelingsDatum($new) {

        $this->afhandelings_datum = $new;
    }

    public function setActieParaaf($new) {

        $this->actie_paraaf = $new;
    }

    //getters

    public function getInspectieId() {

        return $this->inspectie_id;
    }

    public function getGebruikerId() {

        return $this->gebruiker_id;
    }

    public function getVersieId() {

        return $this->versie_id;
    }

    public function getInspectietype() {

        return $this->inspectietype;
    }

    public function getProject() {

        return $this->project;
    }

    public function getLocatie() {

        return $this->locatie;
    }

    public function getDatum() {

        return $this->datum;
    }

    public function getOpmerking() {

        return $this->opmerking;
    }

    public function getAfhandelingsDatum() {

        return $this->afhandelings_datum;
    }

    public function getActieParaaf() {

        return $this->actie_paraaf;
    }

    /**
     * geeft de data van 1 enkele WPI terug als array
     * @author Leander Molegraaf
     * @param Int $wpi_id De ID van de WPI die je wilt hebben
     * @return Stringarray
     */
    public function getInspectieData($wpi_id) {
        $database = new DbInspectie();
        $data_array = $database->DbGetInspectieData($wpi_id);

        return $data_array;
    }

    /**
     * geeft de data van alle huidige WPI's terug.
     * @author Leander Molegraaf
     * @return Stringarray
     * @TODO alles tegelijk returnen zal na een tijdje problemen geven.De applicatie moet uitgebreid worden om dat op te vangen
     */
    public function getInspectieDataOverzicht() {
        $database = new DbInspectie();
        $data_array = $database->DbGetInspectieDataOverzicht();

        return $data_array;
    }

}

?>